<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8" />
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui"
    />
    <title>zzqhost</title>
    <meta name="description" content="天行健，君子以自强不息；地势坤，君子以厚德载物" />
    <meta property="og:type" content="website" />
    <meta property="og:title" content="zzqhost" />
    <meta property="og:site_name" content="zzqhost" />
    <meta property="og:locale" content="zh-CN" />
    <meta name="twitter:card" content="summary" />
    <meta name="twitter:title" content="zzqhost" />
    <link rel="shortcut icon" href="/favicon.ico">
    
    <link rel="preload" href="/assets/css/0.styles.948dbb0a.css" as="style"><link rel="preload" href="/assets/js/app.3e01f5cb.js" as="script"><link rel="preload" href="/assets/js/1.21aaee9f.js" as="script"><link rel="preload" href="/assets/js/14.98a4de9c.js" as="script"><link rel="preload" href="/assets/js/5.352c1a43.js" as="script"><link rel="preload" href="/assets/js/7.4a8a313c.js" as="script"><link rel="preload" href="/assets/js/9.5ce2172b.js" as="script"><link rel="preload" href="/assets/js/11.7bef5ef0.js" as="script"><link rel="preload" href="/assets/js/13.186562af.js" as="script"><link rel="preload" href="/assets/js/15.740f4afc.js" as="script"><link rel="prefetch" href="/assets/js/10.e3f309c4.js"><link rel="prefetch" href="/assets/js/12.cf546b2f.js"><link rel="prefetch" href="/assets/js/16.c0f3e779.js"><link rel="prefetch" href="/assets/js/17.ee3f21b3.js"><link rel="prefetch" href="/assets/js/18.2c35035c.js"><link rel="prefetch" href="/assets/js/19.e4881cfc.js"><link rel="prefetch" href="/assets/js/20.95040517.js"><link rel="prefetch" href="/assets/js/21.cdbb212e.js"><link rel="prefetch" href="/assets/js/22.7d278bc3.js"><link rel="prefetch" href="/assets/js/23.1e2b813e.js"><link rel="prefetch" href="/assets/js/24.6cc55189.js"><link rel="prefetch" href="/assets/js/25.ea35ed40.js"><link rel="prefetch" href="/assets/js/26.2b97bfde.js"><link rel="prefetch" href="/assets/js/27.d323aa74.js"><link rel="prefetch" href="/assets/js/28.30416d07.js"><link rel="prefetch" href="/assets/js/29.02b97357.js"><link rel="prefetch" href="/assets/js/30.95aedede.js"><link rel="prefetch" href="/assets/js/31.79b824fd.js"><link rel="prefetch" href="/assets/js/32.d0cd6341.js"><link rel="prefetch" href="/assets/js/33.14c3c5b9.js"><link rel="prefetch" href="/assets/js/34.ac56f38e.js"><link rel="prefetch" href="/assets/js/35.54820345.js"><link rel="prefetch" href="/assets/js/36.37013d97.js"><link rel="prefetch" href="/assets/js/37.38353206.js"><link rel="prefetch" href="/assets/js/38.36296a20.js"><link rel="prefetch" href="/assets/js/39.37df68d6.js"><link rel="prefetch" href="/assets/js/4.54d65165.js"><link rel="prefetch" href="/assets/js/40.ffbd7a88.js"><link rel="prefetch" href="/assets/js/41.5db561d2.js"><link rel="prefetch" href="/assets/js/42.d876627b.js"><link rel="prefetch" href="/assets/js/43.e5008459.js"><link rel="prefetch" href="/assets/js/44.a24dc4a2.js"><link rel="prefetch" href="/assets/js/45.f696c4e1.js"><link rel="prefetch" href="/assets/js/6.8b8fad13.js"><link rel="prefetch" href="/assets/js/8.8c0e5954.js"><link rel="prefetch" href="/assets/js/vendors~search.c4563fd1.js">
    <link rel="stylesheet" href="/assets/css/0.styles.948dbb0a.css">
  </head>
  <body>
    <div id="loader-wrapper" style="display: none;opacity:0">
      <div id="loader"></div>
      <div class="loader-section section-left"></div>
      <div class="loader-section section-right"></div>
    </div>
    <div id="app" data-server-rendered="true"><div style="height:100%;" data-v-80d5f2bc><section class="el-container main-container" data-v-80d5f2bc><aside class="el-aside menu" style="width:auto;" data-v-67e96130 data-v-80d5f2bc><ul role="menubar" class="menu-wrap el-menu" style="background-color:;" data-v-67e96130><li data-v-67e96130><div class="brand-wrap" style="background-image:url(/brand.jpg);" data-v-67e96130><div class="brand" data-v-67e96130><a href="/" class="avatar waves-effect waves-circle waves-light router-link-active" data-v-67e96130><img src="/avatar.jpg" data-v-67e96130></a> <hgroup class="introduce" data-v-67e96130><div class="nickname" data-v-67e96130>zzqhost</div> <a title="zzqhost@163.com" class="mail" data-v-67e96130>zzqhost@163.com</a></hgroup></div></div></li> <li role="menuitem" tabindex="-1" class="el-menu-item" style="padding-left:20px;color:;background-color:;" data-v-67e96130><i class="iconfont icon-home" data-v-67e96130></i> <span class="item-title" data-v-67e96130>主页</span></li> <li role="menuitem" tabindex="-1" class="el-menu-item" style="padding-left:20px;color:;background-color:;" data-v-67e96130><i class="iconfont icon-biaoqian" data-v-67e96130></i> <span class="item-title" data-v-67e96130>标签分类</span></li> <li role="menuitem" tabindex="-1" class="el-menu-item is-active" style="padding-left:20px;color:#3f51b5;background-color:;" data-v-67e96130><i class="iconfont icon-wenzhang" data-v-67e96130></i> <span class="item-title" data-v-67e96130>时间归档</span></li> <!----> <li role="menuitem" tabindex="-1" class="el-menu-item" style="padding-left:20px;color:;background-color:;" data-v-67e96130><i class="iconfont icon-aboutme" data-v-67e96130></i> <span class="item-title" data-v-67e96130>自我介绍</span></li></ul></aside> <section class="el-container container-warp" data-v-80d5f2bc><header id="topHeader" class="el-header top-header" style="height:60px;padding-left:260px;" data-v-1a942948 data-v-80d5f2bc><div class="header-warp el-row is-align-middle el-row--flex" data-v-1a942948><div class="el-col el-col-12 el-col-xs-7" data-v-1a942948><div class="el-row is-align-middle el-row--flex" data-v-1a942948><div class="el-col el-col-2" data-v-1a942948><button type="button" class="el-button el-button--primary is-circle" data-v-1a942948><!----><!----><span><i class="iconfont icon-caidan" data-v-1a942948></i></span></button></div></div></div> <div class="el-col el-col-20 el-col-xs-24" data-v-1a942948><div class="grid-content bg-purple-light" data-v-1a942948><div class="el-row is-justify-end is-align-middle el-row--flex" data-v-1a942948><div class="el-col el-col-13 el-col-xs-24 el-col-sm-21 el-col-md-17 el-col-lg-13" data-v-1a942948><div aria-haspopup="listbox" role="combobox" aria-owns="el-autocomplete-2780" class="el-autocomplete search-input" data-v-1a942948><div class="el-input el-input--small el-input--suffix"><!----><input type="text" autocomplete="off" valueKey="value" popperClass="search-popper" placeholder="搜搜看" fetchSuggestions="function () { [native code] }" debounce="300" placement="bottom-start" popperAppendToBody="true" value="" class="el-input__inner"><!----><span class="el-input__suffix"><span class="el-input__suffix-inner"><i class="el-input__icon el-icon-search search-ico" data-v-1a942948></i><!----></span><!----></span><!----></div><div role="region" class="el-autocomplete-suggestion el-popper search-popper" style="width:;display:none;"><div class="el-scrollbar"><div class="el-autocomplete-suggestion__wrap el-scrollbar__wrap el-scrollbar__wrap--hidden-default"><ul class="el-scrollbar__view el-autocomplete-suggestion__list"></ul></div><div class="el-scrollbar__bar is-horizontal"><div class="el-scrollbar__thumb" style="width:0;transform:translateX(0%);ms-transform:translateX(0%);webkit-transform:translateX(0%);"></div></div><div class="el-scrollbar__bar is-vertical"><div class="el-scrollbar__thumb" style="height:0;transform:translateY(0%);ms-transform:translateY(0%);webkit-transform:translateY(0%);"></div></div></div></div></div></div></div></div></div></div></header> <main class="el-main my-main" style="margin-left:240px;" data-v-105de776 data-v-80d5f2bc><div class="content-header index-header" data-v-60d87e45 data-v-105de776><div class="container fade-scale in" data-v-60d87e45><h1 id="conentHeader" class="title" data-v-60d87e45>时间归档</h1> <h5 class="subtitle" data-v-60d87e45></h5></div></div> <div class="all-warp" data-v-239f8a51 data-v-105de776><div data-v-239f8a51><h3 data-v-239f8a51>2021-03</h3> <div class="post-warp el-row is-justify-center is-align-middle el-row--flex" data-v-239f8a51><!----><div class="post post-card el-col el-col-20 el-col-xs-23 el-col-sm-23 el-col-md-23 el-col-lg-20" data-v-239f8a51><div class="el-card box-card is-always-shadow" data-v-239f8a51><div class="el-card__header"><div data-v-239f8a51><p class="post-title-time" data-v-239f8a51>2021-03-20 23:59:31</p> <a href="/posts/VPN%EF%BC%88EasyConnect%EF%BC%89%E5%9C%A8ubuntu20.04%E4%B8%8A%E7%99%BB%E5%BD%95%E5%A4%B1%E8%B4%A5%E7%9A%84%E8%A7%A3%E5%86%B3.html" class="post-title-link" data-v-239f8a51>VPN（EasyConnect）在ubuntu20.04上登录失败的解决</a></div></div><div class="el-card__body"> <div data-v-239f8a51><div data-v-239f8a51><div class="post-excerpt" data-v-239f8a51><p>电脑上新安装的LinuxMint20.1版本，基于的是ubuntu20.04，登录VPN，网页和客户端都登录不上去，本文详细记录了分析过程及最终的解决方案。</p>
</div></div> <div class="post-footer" data-v-239f8a51><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>vpn</span></div></div></div></div></div></div></div><div data-v-239f8a51><h3 data-v-239f8a51>2020-03</h3> <div class="post-warp el-row is-justify-center is-align-middle el-row--flex" data-v-239f8a51><!----><div class="post post-card el-col el-col-20 el-col-xs-23 el-col-sm-23 el-col-md-23 el-col-lg-20" data-v-239f8a51><div class="el-card box-card is-always-shadow" data-v-239f8a51><div class="el-card__header"><div data-v-239f8a51><p class="post-title-time" data-v-239f8a51>2020-03-04 17:46:43</p> <a href="/posts/%E4%BD%BF%E7%94%A8.netrc%E5%AE%9E%E7%8E%B0git%E5%85%8D%E5%AF%86%E4%B8%8A%E4%BC%A0%E4%B8%8B%E8%BD%BD%EF%BC%88http%E5%8D%8F%E8%AE%AE%EF%BC%89.html" class="post-title-link" data-v-239f8a51>使用.netrc实现git免密上传下载（http协议）</a></div></div><div class="el-card__body"> <div data-v-239f8a51><div data-v-239f8a51><div class="post-excerpt" data-v-239f8a51><p>使用git下载代码时，可以配置ssh key来免密下载，可有时需要下载http协议的地址，此时就可以配置.netrc来免密了。此篇文章介绍通过.netrc跳过输入密码，包括基本配置，多个账户设置，加密.netrc。</p>
</div></div> <div class="post-footer" data-v-239f8a51><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>Android</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>git</span></div></div></div></div></div></div></div><div data-v-239f8a51><h3 data-v-239f8a51>2019-08</h3> <div class="post-warp el-row is-justify-center is-align-middle el-row--flex" data-v-239f8a51><!----><div class="post post-card el-col el-col-20 el-col-xs-23 el-col-sm-23 el-col-md-23 el-col-lg-20" data-v-239f8a51><div class="el-card box-card is-always-shadow" data-v-239f8a51><div class="el-card__header"><div data-v-239f8a51><p class="post-title-time" data-v-239f8a51>2019-08-06 19:35:18</p> <a href="/posts/Android%E4%BD%BF%E7%94%A8maven%E9%95%9C%E5%83%8F%E5%BA%94%E5%AF%B9%E5%9B%BD%E5%86%85%E8%A2%AB%E5%A2%99%E4%B8%8D%E8%83%BD%E4%B8%8B%E8%BD%BD%E4%BE%9D%E8%B5%96%E5%8C%85%E7%9A%84%E9%97%AE%E9%A2%98.html" class="post-title-link" data-v-239f8a51>Android使用maven镜像应对国内被墙不能下载依赖包的问题</a></div></div><div class="el-card__body"> <div data-v-239f8a51><div data-v-239f8a51><div class="post-excerpt" data-v-239f8a51><p>在国内做个开发不容易啊，要精通各种技能，比如说英文，数学，算法，概率，其中还有一项必备技能就是翻墙，但是作为一个吊丝程序员就比较麻烦了，免费的不好用，慢，还经常不能使用，得经常换。 本文介绍了一种不用翻墙就能轻松应对Android使用mavenCentral，jCenter，google maven仓库的问题。</p>
</div></div> <div class="post-footer" data-v-239f8a51><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>Android</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>maven镜像</span></div></div></div></div></div></div></div><div data-v-239f8a51><h3 data-v-239f8a51>2019-04</h3> <div class="post-warp el-row is-justify-center is-align-middle el-row--flex" data-v-239f8a51><!----><div class="post post-card el-col el-col-20 el-col-xs-23 el-col-sm-23 el-col-md-23 el-col-lg-20" data-v-239f8a51><div class="el-card box-card is-always-shadow" data-v-239f8a51><div class="el-card__header"><div data-v-239f8a51><p class="post-title-time" data-v-239f8a51>2019-04-16 19:18:48</p> <a href="/posts/%E7%BB%99git-pull%E5%8A%A0%E4%B8%8A%E9%BB%98%E8%AE%A4rebase%E5%8A%9F%E8%83%BD.html" class="post-title-link" data-v-239f8a51>给git pull加上默认rebase功能</a></div></div><div class="el-card__body"> <div data-v-239f8a51><div data-v-239f8a51><div class="post-excerpt" data-v-239f8a51><p>git pull时可以加上--rebase参数, 使之不产生Merge点, 保证了代码的整洁</p>
</div></div> <div class="post-footer" data-v-239f8a51><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>Android</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>git</span></div></div></div></div></div><div class="post post-card el-col el-col-20 el-col-xs-23 el-col-sm-23 el-col-md-23 el-col-lg-20" data-v-239f8a51><div class="el-card box-card is-always-shadow" data-v-239f8a51><div class="el-card__header"><div data-v-239f8a51><p class="post-title-time" data-v-239f8a51>2019-04-16 16:18:55</p> <a href="/posts/hexo%E7%9A%84%E6%BA%90%E7%A0%81%E4%BB%93%E5%BA%93.html" class="post-title-link" data-v-239f8a51>hexo的源码仓库</a></div></div><div class="el-card__body"> <div data-v-239f8a51><div data-v-239f8a51><div class="post-excerpt" data-v-239f8a51><p>在第四篇中已经写过备份了，为什么又再写一遍呢？
主要是我发现了几个不方便的点，之前欠考虑，两年后再重新折腾一番。</p>
</div></div> <div class="post-footer" data-v-239f8a51><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>hexo</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>博客</span></div></div></div></div></div></div></div><div data-v-239f8a51><h3 data-v-239f8a51>2018-03</h3> <div class="post-warp el-row is-justify-center is-align-middle el-row--flex" data-v-239f8a51><!----><div class="post post-card el-col el-col-20 el-col-xs-23 el-col-sm-23 el-col-md-23 el-col-lg-20" data-v-239f8a51><div class="el-card box-card is-always-shadow" data-v-239f8a51><div class="el-card__header"><div data-v-239f8a51><p class="post-title-time" data-v-239f8a51>2018-03-10 11:56:53</p> <a href="/posts/Android%E4%B8%ADJSBridge%E7%9A%84%E5%8E%9F%E7%90%86%E4%B8%8E%E5%AE%9E%E7%8E%B0.html" class="post-title-link" data-v-239f8a51>Android中JSBridge的原理与实现</a></div></div><div class="el-card__body"> <div data-v-239f8a51><div data-v-239f8a51><div class="post-excerpt" data-v-239f8a51><p>首先我们来了解一下什么是JSBridge和为什么要使用JSBridge？</p>
<p>在开发中，为了追求开发的效率以及移植的便利性，一些展示性强的页面我们会偏向于使用h5来完成，功能性强的页面我们会偏向于使用native来完成，而一旦使用了h5，为了在h5中尽可能的得到native的体验，我们native层需要暴露一些方法给js调用，比如，弹Toast提醒，弹Dialog，分享等等，有时候甚至把h5的网络请求放到native去完成。</p>
<p>JSBridge做得好的一个典型就是微信，微信给开发者提供了JSSDK，该SDK中暴露了很多微信native层的方法，比如支付，定位等。</p>
<p>本文将对js和Native的通信原理和实现方法的一些探讨。</p>
</div></div> <div class="post-footer" data-v-239f8a51><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>Android</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>JSBridge</span></div></div></div></div></div></div></div><div data-v-239f8a51><h3 data-v-239f8a51>2018-02</h3> <div class="post-warp el-row is-justify-center is-align-middle el-row--flex" data-v-239f8a51><!----><div class="post post-card el-col el-col-20 el-col-xs-23 el-col-sm-23 el-col-md-23 el-col-lg-20" data-v-239f8a51><div class="el-card box-card is-always-shadow" data-v-239f8a51><div class="el-card__header"><div data-v-239f8a51><p class="post-title-time" data-v-239f8a51>2018-02-24 11:38:11</p> <a href="/posts/%E6%84%9F%E5%86%92%E7%9A%84%E5%88%86%E7%B1%BB%E5%8F%8A%E6%B2%BB%E7%96%97.html" class="post-title-link" data-v-239f8a51>感冒的分类及治疗</a></div></div><div class="el-card__body"> <div data-v-239f8a51><div data-v-239f8a51><div class="post-excerpt" data-v-239f8a51><p>感冒了去医院看病，尤其是孩子的感冒，更是让人操碎了心，而去了医院，又被医生绕晕了，一会儿风寒，一会儿又是病毒型的，真是头晕，作为程序员，咱应该把它搞清楚对吧，知根知底，下次做到心中有数，行动不乱。这篇文章就从分类上详细的说一下，同样是感冒，但从中医来看，感冒分风寒感冒、风热感冒；西医又把感冒分为病毒性的和细菌性的，还有流感病毒引起的<strong>流感</strong>，这个很严重，需要大家重视（不严重？请君看看当年的SARS，和《流感下的北京中年》）。</p>
</div></div> <div class="post-footer" data-v-239f8a51><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>感冒</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>生活</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>育儿</span></div></div></div></div></div></div></div><div data-v-239f8a51><h3 data-v-239f8a51>2018-01</h3> <div class="post-warp el-row is-justify-center is-align-middle el-row--flex" data-v-239f8a51><!----><div class="post post-card el-col el-col-20 el-col-xs-23 el-col-sm-23 el-col-md-23 el-col-lg-20" data-v-239f8a51><div class="el-card box-card is-always-shadow" data-v-239f8a51><div class="el-card__header"><div data-v-239f8a51><p class="post-title-time" data-v-239f8a51>2018-01-03 07:41:01</p> <a href="/posts/%E5%AD%A6%E4%B9%A0nodejs%E7%AC%AC%E4%B8%80%E5%A4%A9.html" class="post-title-link" data-v-239f8a51>学习nodejs第一天</a></div></div><div class="el-card__body"> <div data-v-239f8a51><div data-v-239f8a51><div class="post-excerpt" data-v-239f8a51><p>买来新书＜了不起的Node.js＞, 初学之下心潮澎湃，忍不住手痒想写点东西．</p>
</div></div> <div class="post-footer" data-v-239f8a51><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>nodejs</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>npm</span></div></div></div></div></div></div></div><div data-v-239f8a51><h3 data-v-239f8a51>2017-11</h3> <div class="post-warp el-row is-justify-center is-align-middle el-row--flex" data-v-239f8a51><!----><div class="post post-card el-col el-col-20 el-col-xs-23 el-col-sm-23 el-col-md-23 el-col-lg-20" data-v-239f8a51><div class="el-card box-card is-always-shadow" data-v-239f8a51><div class="el-card__header"><div data-v-239f8a51><p class="post-title-time" data-v-239f8a51>2017-11-27 20:16:25</p> <a href="/posts/%E5%88%9D%E5%85%A5%E8%B7%AF%E7%94%B1%E5%99%A8%E5%88%B7%E6%9C%BA.html" class="post-title-link" data-v-239f8a51>初入路由器刷机</a></div></div><div class="el-card__body"> <div data-v-239f8a51><div data-v-239f8a51><div class="post-excerpt" data-v-239f8a51><p>目前路由器折腾刷机，除了采用各品牌的原厂固件外，第三方路由器固件，基本就是：Tomato、DD-WRT、OpenWRT三种。
当然还有其他一些更加小众的版本, 和很多从这三大固件衍生出来的修改版固件。我的这篇文章, 可以让大家对这些知识有一个相对比较全面的理解, 使你更容易入门一些.</p>
</div></div> <div class="post-footer" data-v-239f8a51><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>OpenWRT</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>DD-Wrt</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>Tomato</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>路由器刷机</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>PandoraBox</span></div></div></div></div></div></div></div><div data-v-239f8a51><h3 data-v-239f8a51>2017-08</h3> <div class="post-warp el-row is-justify-center is-align-middle el-row--flex" data-v-239f8a51><!----><div class="post post-card el-col el-col-20 el-col-xs-23 el-col-sm-23 el-col-md-23 el-col-lg-20" data-v-239f8a51><div class="el-card box-card is-always-shadow" data-v-239f8a51><div class="el-card__header"><div data-v-239f8a51><p class="post-title-time" data-v-239f8a51>2017-08-14 11:14:28</p> <a href="/posts/ClassLoader%E8%AF%A6%E8%A7%A3.html" class="post-title-link" data-v-239f8a51>ClassLoader详解</a></div></div><div class="el-card__body"> <div data-v-239f8a51><div data-v-239f8a51><div class="post-excerpt" data-v-239f8a51><p>大家都知道，一个Java程序编译之后，是由若干个.class文件组织而成的一个完整的Java应用程序，当程序在运行时，即会调用该程序的一个入口函数来调用系统的相关功能，而这些功能都被封装在不同的class文件当中，所以经常要从这个class文件中要调用另外一个class文件中的方法，如果另外一个文件不存在的，则会引发系统异常。而程序在启动的时候，并不会一次性加载程序所要用的所有class文件，而是根据程序的需要，通过Java的类加载机制（ClassLoader）来动态加载某个class文件到内存当中的，从而只有class文件被载入到了内存之后，才能被其它class所引用。所以ClassLoader就是用来动态加载class文件到内存当中用的。</p>
</div></div> <div class="post-footer" data-v-239f8a51><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>Android</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>ClassLoader</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>动态加载</span></div></div></div></div></div></div></div><div data-v-239f8a51><h3 data-v-239f8a51>2017-07</h3> <div class="post-warp el-row is-justify-center is-align-middle el-row--flex" data-v-239f8a51><!----><div class="post post-card el-col el-col-20 el-col-xs-23 el-col-sm-23 el-col-md-23 el-col-lg-20" data-v-239f8a51><div class="el-card box-card is-always-shadow" data-v-239f8a51><div class="el-card__header"><div data-v-239f8a51><p class="post-title-time" data-v-239f8a51>2017-07-07 14:57:18</p> <a href="/posts/Android%E5%BF%AB%E9%80%9F%E5%8A%A0%E8%BD%BDDex.html" class="post-title-link" data-v-239f8a51>Android快速加载Dex</a></div></div><div class="el-card__body"> <div data-v-239f8a51><div data-v-239f8a51><div class="post-excerpt" data-v-239f8a51><p>DexFile类的LoadDex方法可以动态加载Dex文件，但是，这个类有一个缺陷，就是第一次启动并加载一个dex文件时，（尤其在ART模式）需要花费很长的时间。因为它会执行一次dexopt（art以下）或dex2oat（art及以上）操作。
正常情况下不会感觉到它的不足，但是当你在App中使用插件化框架的时候，这个缺点会放大。
本篇总结了几个解决此问题的方法</p>
</div></div> <div class="post-footer" data-v-239f8a51><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>Android</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>快速加载dex， TurboDex</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>解释执行</span></div></div></div></div></div><div class="post post-card el-col el-col-20 el-col-xs-23 el-col-sm-23 el-col-md-23 el-col-lg-20" data-v-239f8a51><div class="el-card box-card is-always-shadow" data-v-239f8a51><div class="el-card__header"><div data-v-239f8a51><p class="post-title-time" data-v-239f8a51>2017-07-05 10:13:07</p> <a href="/posts/%E5%AD%97%E7%AC%A6%E7%BC%96%E7%A0%81.html" class="post-title-link" data-v-239f8a51>字符编码</a></div></div><div class="el-card__body"> <div data-v-239f8a51><div data-v-239f8a51><div class="post-excerpt" data-v-239f8a51><p>多年前学习过各种编码，现在再来复习一遍，温故使不忘记，呵呵。 什么ANSI UNICODE UTF-8 GB2312 GBK DBCS UCS……所有的编码名词繁杂不堪，假如您细细的阅读本文你一定可以清晰的理解他们。</p>
</div></div> <div class="post-footer" data-v-239f8a51><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>字符编码</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>unicode</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>utf8</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>GB2312</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>UTF</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>BMP</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>BOM</span></div></div></div></div></div></div></div><div data-v-239f8a51><h3 data-v-239f8a51>2017-06</h3> <div class="post-warp el-row is-justify-center is-align-middle el-row--flex" data-v-239f8a51><!----><div class="post post-card el-col el-col-20 el-col-xs-23 el-col-sm-23 el-col-md-23 el-col-lg-20" data-v-239f8a51><div class="el-card box-card is-always-shadow" data-v-239f8a51><div class="el-card__header"><div data-v-239f8a51><p class="post-title-time" data-v-239f8a51>2017-06-24 21:50:21</p> <a href="/posts/Retrofit2%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.html" class="post-title-link" data-v-239f8a51>Retrofit2学习笔记</a></div></div><div class="el-card__body"> <div data-v-239f8a51><div data-v-239f8a51><div class="post-excerpt" data-v-239f8a51><p>时至今日，Android的网络框架不再像之前那么到处都是，随着Google把HttpClient直接删掉，似乎意味着Android越来越成熟。网络框架中的佼佼者Volley也不再那么光鲜，取而代之的是Retrofit和okHttp。 这两个网络库都是Square这个牛逼的公司出品的,这个公司出品了好多开源库, 大家有兴趣可以去了解下.</p>
<p>作为一个资深的Android从业者(呵呵~), 一直没有好好研究过retrofit, 这次下定决心要好好研究一下包括Retrofit + okHttp + RxJava等一系列新技术, 免得被时代抛弃.</p>
</div></div> <div class="post-footer" data-v-239f8a51><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>Android</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>retrofit</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>retrofit2</span></div></div></div></div></div><div class="post post-card el-col el-col-20 el-col-xs-23 el-col-sm-23 el-col-md-23 el-col-lg-20" data-v-239f8a51><div class="el-card box-card is-always-shadow" data-v-239f8a51><div class="el-card__header"><div data-v-239f8a51><p class="post-title-time" data-v-239f8a51>2017-06-18 18:11:58</p> <a href="/posts/Android%E6%89%93%E6%B8%A0%E9%81%93%E5%8C%85%E6%96%B9%E6%A1%88%E6%80%BB%E7%BB%93.html" class="post-title-link" data-v-239f8a51>Android打渠道包方案总结</a></div></div><div class="el-card__body"> <div data-v-239f8a51><div data-v-239f8a51><div class="post-excerpt" data-v-239f8a51><p>本篇是上一篇{% post_link Android签名原理剖析 %}的续章，主要总结了目前国内市面上Android应用的多种打渠道包的方案，并对新推出的Apk signature Scheme V2签名方案下的签名也进行了分析和总结</p>
</div></div> <div class="post-footer" data-v-239f8a51><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>Android</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>签名</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>APK Signature Scheme v2</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>多渠道</span></div></div></div></div></div><div class="post post-card el-col el-col-20 el-col-xs-23 el-col-sm-23 el-col-md-23 el-col-lg-20" data-v-239f8a51><div class="el-card box-card is-always-shadow" data-v-239f8a51><div class="el-card__header"><div data-v-239f8a51><p class="post-title-time" data-v-239f8a51>2017-06-17 22:30:42</p> <a href="/posts/Android%E7%AD%BE%E5%90%8D%E5%8E%9F%E7%90%86%E5%89%96%E6%9E%90.html" class="post-title-link" data-v-239f8a51>Android签名剖析</a></div></div><div class="el-card__body"> <div data-v-239f8a51><div data-v-239f8a51><div class="post-excerpt" data-v-239f8a51><p>本篇介绍了Android中的apk的签名原理，包括老的签名方法，和新的Apk Signature Scheme V2介绍。使大家能对这一块有一个大致的了解，为快速打渠道包打下理论基础</p>
</div></div> <div class="post-footer" data-v-239f8a51><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>Android</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>签名</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>APK Signature Scheme v2</span></div></div></div></div></div><div class="post post-card el-col el-col-20 el-col-xs-23 el-col-sm-23 el-col-md-23 el-col-lg-20" data-v-239f8a51><div class="el-card box-card is-always-shadow" data-v-239f8a51><div class="el-card__header"><div data-v-239f8a51><p class="post-title-time" data-v-239f8a51>2017-06-13 14:50:31</p> <a href="/posts/productFlavors%E7%9A%84%E9%AB%98%E7%BA%A7%E7%94%A8%E6%B3%95.html" class="post-title-link" data-v-239f8a51>productFlavors的高级用法</a></div></div><div class="el-card__body"> <div data-v-239f8a51><div data-v-239f8a51><div class="post-excerpt" data-v-239f8a51><p>Android gradle的功能非常强大，其中有一项productFlavors, 顾名而思义，就是用于定义产品的特性，这是每个产品不同的地方。有了它我们可以用同一套代码创建不同的产品。我们这篇文章不具体介绍它的详细用法，而只是介绍一个我实际工作中用到的一项比较复杂的用法。</p>
</div></div> <div class="post-footer" data-v-239f8a51><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>Android</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>productFlavors</span></div></div></div></div></div></div></div><div data-v-239f8a51><h3 data-v-239f8a51>2017-05</h3> <div class="post-warp el-row is-justify-center is-align-middle el-row--flex" data-v-239f8a51><!----><div class="post post-card el-col el-col-20 el-col-xs-23 el-col-sm-23 el-col-md-23 el-col-lg-20" data-v-239f8a51><div class="el-card box-card is-always-shadow" data-v-239f8a51><div class="el-card__header"><div data-v-239f8a51><p class="post-title-time" data-v-239f8a51>2017-05-06 22:25:55</p> <a href="/posts/%E4%BD%BF%E7%94%A8hexo%E6%90%AD%E5%BB%BA%E9%9D%99%E6%80%81%E5%8D%9A%E5%AE%A25.html" class="post-title-link" data-v-239f8a51>使用hexo搭建静态博客(五)</a></div></div><div class="el-card__body"> <div data-v-239f8a51><div data-v-239f8a51><div class="post-excerpt" data-v-239f8a51><p>这是hexo系列文章的第五篇 - 自动部署</p>
</div></div> <div class="post-footer" data-v-239f8a51><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>hexo</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>博客</span></div></div></div></div></div><div class="post post-card el-col el-col-20 el-col-xs-23 el-col-sm-23 el-col-md-23 el-col-lg-20" data-v-239f8a51><div class="el-card box-card is-always-shadow" data-v-239f8a51><div class="el-card__header"><div data-v-239f8a51><p class="post-title-time" data-v-239f8a51>2017-05-06 22:00:30</p> <a href="/posts/%E4%BD%BF%E7%94%A8hexo%E6%90%AD%E5%BB%BA%E9%9D%99%E6%80%81%E5%8D%9A%E5%AE%A24.html" class="post-title-link" data-v-239f8a51>使用hexo搭建静态博客(四)</a></div></div><div class="el-card__body"> <div data-v-239f8a51><div data-v-239f8a51><div class="post-excerpt" data-v-239f8a51><p>这是hexo系列文章的第四篇 - 备份</p>
</div></div> <div class="post-footer" data-v-239f8a51><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>hexo</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>博客</span></div></div></div></div></div><div class="post post-card el-col el-col-20 el-col-xs-23 el-col-sm-23 el-col-md-23 el-col-lg-20" data-v-239f8a51><div class="el-card box-card is-always-shadow" data-v-239f8a51><div class="el-card__header"><div data-v-239f8a51><p class="post-title-time" data-v-239f8a51>2017-05-06 21:57:46</p> <a href="/posts/%E4%BD%BF%E7%94%A8hexo%E6%90%AD%E5%BB%BA%E9%9D%99%E6%80%81%E5%8D%9A%E5%AE%A23.html" class="post-title-link" data-v-239f8a51>使用hexo搭建静态博客(三)</a></div></div><div class="el-card__body"> <div data-v-239f8a51><div data-v-239f8a51><div class="post-excerpt" data-v-239f8a51><p>这是hexo系列文章的第三篇 - 配置主题</p>
</div></div> <div class="post-footer" data-v-239f8a51><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>hexo</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>博客</span></div></div></div></div></div><div class="post post-card el-col el-col-20 el-col-xs-23 el-col-sm-23 el-col-md-23 el-col-lg-20" data-v-239f8a51><div class="el-card box-card is-always-shadow" data-v-239f8a51><div class="el-card__header"><div data-v-239f8a51><p class="post-title-time" data-v-239f8a51>2017-05-06 21:08:10</p> <a href="/posts/%E4%BD%BF%E7%94%A8hexo%E6%90%AD%E5%BB%BA%E9%9D%99%E6%80%81%E5%8D%9A%E5%AE%A22.html" class="post-title-link" data-v-239f8a51>使用hexo搭建静态博客(二)</a></div></div><div class="el-card__body"> <div data-v-239f8a51><div data-v-239f8a51><div class="post-excerpt" data-v-239f8a51><p>这是hexo系列文章的第二篇 - 使用hexo</p>
</div></div> <div class="post-footer" data-v-239f8a51><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>hexo</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>博客</span></div></div></div></div></div><div class="post post-card el-col el-col-20 el-col-xs-23 el-col-sm-23 el-col-md-23 el-col-lg-20" data-v-239f8a51><div class="el-card box-card is-always-shadow" data-v-239f8a51><div class="el-card__header"><div data-v-239f8a51><p class="post-title-time" data-v-239f8a51>2017-05-06 17:10:44</p> <a href="/posts/%E4%BD%BF%E7%94%A8hexo%E6%90%AD%E5%BB%BA%E9%9D%99%E6%80%81%E5%8D%9A%E5%AE%A21.html" class="post-title-link" data-v-239f8a51>使用hexo搭建静态博客(一)</a></div></div><div class="el-card__body"> <div data-v-239f8a51><div data-v-239f8a51><div class="post-excerpt" data-v-239f8a51><p>正式开始研究一下hexo这个东东，在这里把学习的过程记录下来</p>
</div></div> <div class="post-footer" data-v-239f8a51><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>hexo</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>博客</span></div></div></div></div></div></div></div><div data-v-239f8a51><h3 data-v-239f8a51>2017-04</h3> <div class="post-warp el-row is-justify-center is-align-middle el-row--flex" data-v-239f8a51><!----><div class="post post-card el-col el-col-20 el-col-xs-23 el-col-sm-23 el-col-md-23 el-col-lg-20" data-v-239f8a51><div class="el-card box-card is-always-shadow" data-v-239f8a51><div class="el-card__header"><div data-v-239f8a51><p class="post-title-time" data-v-239f8a51>2017-04-20 15:56:28</p> <a href="/posts/%E5%9C%A8Tomcat%E4%B8%AD%E9%83%A8%E7%BD%B2web%E9%A1%B9%E7%9B%AE.html" class="post-title-link" data-v-239f8a51>在Tomcat中部署web项目</a></div></div><div class="el-card__body"> <div data-v-239f8a51><div data-v-239f8a51><div class="post-excerpt" data-v-239f8a51><p>此篇文章主要讲一下如何在tomcat中部署web程序，方法有很多种，知道了配置的原理，应用起来得心应手</p>
</div></div> <div class="post-footer" data-v-239f8a51><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>tomcat</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>web开发</span></div></div></div></div></div></div></div><div data-v-239f8a51><h3 data-v-239f8a51>2017-01</h3> <div class="post-warp el-row is-justify-center is-align-middle el-row--flex" data-v-239f8a51><!----><div class="post post-card el-col el-col-20 el-col-xs-23 el-col-sm-23 el-col-md-23 el-col-lg-20" data-v-239f8a51><div class="el-card box-card is-always-shadow" data-v-239f8a51><div class="el-card__header"><div data-v-239f8a51><p class="post-title-time" data-v-239f8a51>2017-01-11 16:20:51</p> <a href="/posts/%E9%80%9A%E8%BF%87hexo%E6%90%AD%E5%BB%BA%E4%B8%AA%E4%BA%BA%E5%8D%9A%E5%AE%A2.html" class="post-title-link" data-v-239f8a51>通过hexo搭建个人博客</a></div></div><div class="el-card__body"> <div data-v-239f8a51><div data-v-239f8a51><div class="post-excerpt" data-v-239f8a51><p>也写一个hexo博客的搭建, 算是给自己一个记录,具体详细的内容可以参考文内的链接.</p>
</div></div> <div class="post-footer" data-v-239f8a51><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>hexo</span></div></div></div></div></div><div class="post post-card el-col el-col-20 el-col-xs-23 el-col-sm-23 el-col-md-23 el-col-lg-20" data-v-239f8a51><div class="el-card box-card is-always-shadow" data-v-239f8a51><div class="el-card__header"><div data-v-239f8a51><p class="post-title-time" data-v-239f8a51>2017-01-03 15:00:35</p> <a href="/posts/%E7%90%86%E8%A7%A3RESTful%E6%9E%B6%E6%9E%84.html" class="post-title-link" data-v-239f8a51>理解RESTful架构</a></div></div><div class="el-card__body"> <div data-v-239f8a51><div data-v-239f8a51><div class="post-excerpt" data-v-239f8a51><p>在移动互联网的大潮下，随着docker等技术的兴起，『微服务』的概念也越来越被大家接受并应用于实践，日益增多的web service逐渐统一于RESTful 架构风格，如果开发者对RESTful 架构风格不甚了解，则开发出的所谓RESTful API总会貌合神离，不够规范。</p>
</div></div> <div class="post-footer" data-v-239f8a51><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>web server</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>RESTful</span><span class="el-tag el-tag--medium is-hit" data-v-239f8a51>restful</span></div></div></div></div></div></div></div></div></main></section> <button type="button" class="el-button gotop-btn el-button--primary is-circle" data-v-78a2dcfa data-v-80d5f2bc><!----><!----><span><i class="el-icon-arrow-up" data-v-78a2dcfa></i></span></button></section> <footer class="el-footer container-footer" style="height:60px;" data-v-76c50ee3 data-v-80d5f2bc><div class="footer-warp el-row is-justify-center is-align-center el-row--flex footerMargin" data-v-76c50ee3><div class="footer-top el-col el-col-24" data-v-76c50ee3><p class="ellipsis" data-v-76c50ee3><span data-v-76c50ee3>
          博客内容遵循
          <a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh" data-v-76c50ee3>知识共享 署名 - 非商业性 - 相同方式共享 4.0 国际协议</a></span></p></div> <div class="footer-bottom el-col el-col-24" data-v-76c50ee3><p class="ellipsis" data-v-76c50ee3><span data-v-76c50ee3><span data-v-76c50ee3>
            张志强的博客 © 2017-01 ~ 2021-03
          </span></span> <span data-v-76c50ee3>
          Power by
          <a href="https://vuepress.vuejs.org/zh/" target="_blank" data-v-76c50ee3>VuePress</a> Theme
          <a href="https://github.com/zhhlwd/vuepress-theme-indigo-material" target="_blank" data-v-76c50ee3>indigo material</a></span></p></div></div></footer> <div class="overlay" data-v-80d5f2bc></div></div><div class="global-ui"></div></div>
    <script src="/assets/js/app.3e01f5cb.js" defer></script><script src="/assets/js/1.21aaee9f.js" defer></script><script src="/assets/js/14.98a4de9c.js" defer></script><script src="/assets/js/5.352c1a43.js" defer></script><script src="/assets/js/7.4a8a313c.js" defer></script><script src="/assets/js/9.5ce2172b.js" defer></script><script src="/assets/js/11.7bef5ef0.js" defer></script><script src="/assets/js/13.186562af.js" defer></script><script src="/assets/js/15.740f4afc.js" defer></script>
  </body>
</html>
